﻿/**********************************************************************
 * @file   FITKMeshGenerateProcessorGmsh.h
 * @brief  gmsh网格划分处理器
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date   2024-10-12
 *********************************************************************/
#ifndef _FITKMESHGENERATEPROCESSORGMSH_H_
#define _FITKMESHGENERATEPROCESSORGMSH_H_

#include "FITK_Interface/FITKInterfaceMeshGen/FITKAbstractMeshProcessor.h"

namespace Interface
{
    class FITKUnstructuredMesh;
    class FITKComponentManager;
};

namespace Gmsh
{

    /**
     * @brief  gmsh网格划分处理器
     * @author liuzhonghua (liuzhonghuaszch@163.com)
     * @date   2024-10-12
     */
    class FITKMeshGenerateProcessorGmsh : public Interface::FITKAbstractMeshProcessor
    {
    public:
        /**
         * @brief Construct a new FITKMeshGenerateGmsh object
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-10-12
         */
        explicit FITKMeshGenerateProcessorGmsh();
        /**
         * @brief    Destroy the FITKMeshGenerateGmsh object
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-10-12
         */
        virtual ~FITKMeshGenerateProcessorGmsh();

        /**
         * @brief 开始执行处理
         * @param[i]  info           附加信息
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-10-12
         */
        virtual void start(QStringList info = QStringList());

    private:

        /**
         * @brief    提取所有点
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-10-15
         */
        void extractAllNodes();
        /**
         * @brief    提取所有单元
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-10-15
         */
        void extractAllElement();
        /**
         * @brief    分区数据提取
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-10-14
         */
        void meshPartitionDataExtract();
    private:
        /**
         * @brief  集合数据管理器
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-10-15
         */
        Interface::FITKComponentManager* _setDataMgr{};
        /**
         * @brief  网格数据
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-10-15
         */
        Interface::FITKUnstructuredMesh* _meshData{};
    };
}


#endif // !_FITKMESHGENERATEPROCESSORGMSH_H_
